package com.example.demo.pojo.dto.dingtalk;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 钉钉机器人消息通知请求dto
 *
 * @author TongDaShuai
 * @since 2021/12/14
 */
@Data
public abstract class BaseRobotMsgNotifyReqDto {

    /**
     * 需要@的人
     */
    private AtDto at;

    /**
     * 消息类型,见枚举DingMsgTypeEnum
     */
    private String msgtype;


    /**
     * 设置消息类型
     *
     * @param msgtype 消息类型,见枚举DingMsgType
     * @return
     */
    public BaseRobotMsgNotifyReqDto msgtype(String msgtype) {
        this.msgtype = msgtype;
        return this;
    }

    /**
     * 设置 需要@的人的手机号
     *
     * @param atMobiles 需要@的人的手机号
     * @return
     */
    public BaseRobotMsgNotifyReqDto atMobiles(List<String> atMobiles) {
        if (this.at == null) {
            this.at = new AtDto();
        }
        this.at.atMobiles = atMobiles;
        return this;
    }

    /**
     * 设置 需要@的人的手机号
     *
     * @param atMobile 需要@的人的手机号
     * @return
     */
    public BaseRobotMsgNotifyReqDto atMobile(String atMobile) {
        if (this.at == null) {
            this.at = new AtDto();
        }
        if (this.at.atMobiles == null) {
            this.at.atMobiles = new ArrayList<>();
        }
        this.at.atMobiles.add(atMobile);
        return this;
    }



    /**
     * 设置 需要@的人的userId
     *
     * @param atUserId 需要@的人的userId
     * @return
     */
    public BaseRobotMsgNotifyReqDto atUserId(String atUserId) {
        if (this.at == null) {
            this.at = new AtDto();
        }
        if (this.at.atUserIds == null) {
            this.at.atUserIds = new ArrayList<>();
        }
        this.at.atUserIds.add(atUserId);
        return this;
    }

    /**
     * 设置 是否@所有人
     *
     * @param isAtAll 是否@所有人
     * @return
     */
    public BaseRobotMsgNotifyReqDto isAtAll(boolean isAtAll) {
        if (this.at == null) {
            this.at = new AtDto();
        }
        this.at.isAtAll = isAtAll;
        return this;
    }


    @Data
    public static class AtDto {

        /**
         * 需要@的人的手机号
         */
        private List<String> atMobiles;

        /**
         * 需要@的人的手机号的用户id
         */
        private List<String> atUserIds;

        /**
         * 是否@所有人
         */
        private boolean isAtAll;
    }




}
